/**
 * \file lcd.h
 * \brief Header du driver LCD.
 * \author Nicolas.M
 * \version 0.7
 * \date 22 février 2011
 *
 * Implémentation des APIs de l'écran LCD.
 * 
 * \test Routine de test du driver LCD
 * - initialisation de l'affichage
 * - affiche "hello \n world" (printDisplay)
 * \n OK affiche hello world
 * - efface l'affichage (clearDisplay)
 * \n OK
 * - affiche "Display cleared, depassement" pour tester le dépassement (printDisplay)
 * \n OK tronque à la premier ligne
 * - affiche "Display cleared, depassement \n test ligne 3" pour tester
 * \n OK tronque et affiche test ligne3
 * - efface l'affichage (cleardisplay)
 * - affiche "ligne 1" sur la premier ligne (lprintDisplay) 
 * \n OK
 * - affiche "ligne 2" sur la deuxième ligne (lprintDisplay)
 * \n OK
 * - affiche "depassement 1, tronquature" sur la ligne 1 pour tester le dépassement (lprintDisplay)
 * \n OK tronque
 * - affiche "depassement 2, tronquature" sur la ligne 2 pour tester le dépassement (lprintDisplay)
 * \n OK
 * - efface l'affichage (clearDisplay)
 * - affiche "5" sur la ligne 1 à la 4e position (cprintDisplay)
 * \n OK n'efface pas le reste du texte
 * - affiche "8" sur le charatère suivant (putcDisplay)
 * \n OK n'efface pas le reste du texte
 * - efface deux fois l'affichage
 * \n OK pas d'erreur
 *
 */
 

#ifndef H_LCD
#define H_LCD

/**
*\def LINE_DELIMITER
*\def FIRST_LINE
*\def SECOND_LINE
*\def MAX_LINE_LENGHT
*
*/

#define		LINE_DELIMITER		'\n'
#define		FIRST_LINE	0
#define		SECOND_LINE	1
#define		MAX_LINE_LENGHT	16

/**
 * \fn void initDisplay(void)
 * \brief Intialise le LCD
 *
 */
 
void initDisplay(void);

/**
 * \fn void clearDisplay()
 * \brief Efface tout les charactères sur le LCD.
 * 
 */

void clearDisplay();

/**
 * \fn int printDisplay(char* format)
 * \brief Affiche une chaine de charactères.
 * 
 * \param format Chaine de charctère à afficher.
 * \return 0
 * \details La chaine de charactère à un taille max par ligne de 16 symboles.
 */

int printDisplay(char* format);

/**
 * \fn int lprintDisplay(char* format, int line)
 * \brief Affiche une chaine de charactères sur une ligne.
 * 
 * \param format Chaine de charactères à afficher
 * \param line numero de la ligne sur laquelle afficher utilisation des macros FIRST_LINE et SECOND_LINE
 * \details La chaine de charactère à un taille max par ligne de 16 symboles.
 * \return 0
 *
 */

int lprintDisplay(char* format, int line);

/**
 * \fn int cprintDisplay(char c, int line, int pos)
 * \brief Affiche un charactère 
 * 
 * \param c Charactère à afficher
 * \param line numero de la ligne sur laquelle afficher utilisation des macros FIRST_LINE et SECOND_LINE
 * \param pos Position du charactère à écrire
 * \return 0
 */

 
int cprintDisplay(char c, int line, int pos);

/**
 * \fn int putcDisplay(char c)
 * \brief Ecrit un charactère à la position courante
 * 
 * \param c Charactère à afficher.
 * \return 0
 */
 
int putcDisplay(char c);

#endif

